#include "hw_motor.h"
#include "lcd/lcd.h"

// 设置fi引脚的PWM比较值
static void set_fi(uint16_t dat)
{
    DL_TimerG_setCaptureCompareValue(PWM_MOTOR1_INST, dat, GPIO_PWM_MOTOR1_C1_IDX);
}
// 设置bi引脚的PWM比较值
static void set_bi(uint16_t dat)
{
    DL_TimerG_setCaptureCompareValue(PWM_MOTOR1_INST, dat, GPIO_PWM_MOTOR1_C0_IDX);
}

// 限制输入的PWM最大值
// 仅内部使用
static void restrict_pwm_max_value(uint16_t *value)
{
    if (*value > MOTOR_PWM_MAX)
    {
        *value = MOTOR_PWM_MAX;
    }
}

// 设置电机速度
void set_motor(uint16_t fi_value, uint16_t bi_value)
{
    restrict_pwm_max_value(&fi_value);
    restrict_pwm_max_value(&bi_value);

    // 添加调试信息
    // LCD_ShowIntNum(10, 100, fi_value, 5, RED, WHITE, 16); // 显示正转PWM值
    // LCD_ShowIntNum(10, 130, bi_value, 5, RED, WHITE, 16); // 显示反转PWM值

    set_fi(fi_value);
    set_bi(bi_value);
}

// 电机停止
void stop_motor(void)
{
    set_motor(0, 0);
}